package com.example.demo.controller;


import com.example.demo.model.UserInfo;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;

/**
 * 实现程序和用户之间的映射
 * 方法1：实现@RequestMapping
 */
@Controller
@ResponseBody // 返回一个非静态页面的数据
@RequestMapping("/user") // 一级路由
public class UserController {
    @RequestMapping("/sayhi") // 二级路由
    public String sayHi() {
        return "hello,world";
    }

    /**
     * 参数扩展，只用支持一种请求
     * method 代表 支持的 请求的方式，value 是二级路由的名字
     */
    @RequestMapping(method = RequestMethod.GET,value = "sayhi2")
    public String sayHi2() {
        return "hello,world2";
    }

    /**
     * 方法2：@PostMapping
     */
    @PostMapping("/sayhi3")
    public String sayHi3() {
        return "hello,world3";
    }

    /**
     * 方法3：@GetMapping
     */
    @GetMapping("/sayhi4")
    public String sayHi4(){
        return "aaaa";
    }

    /**
     * 获取参数
     */

    /**
     * 方法一：获取单个参数
     */
    // 两种命名方式 getUserById | findUserById
    @RequestMapping("/getuserbyid") // 理由全部小写，规范
    public UserInfo getUserById(Integer id) { // 通过Id获取 参数 // 也可以 int id
        // 最好是 Integer id，包装类
        // 不查数据库，伪代码，返回用户对象
        UserInfo userInfo = new UserInfo();
        userInfo.setId(id);
        userInfo.setUsername("(๑′ᴗ‵๑)Ｉ Lᵒᵛᵉᵧₒᵤ❤");
        userInfo.setPassword("707703");
        userInfo.setAge(22);
        return userInfo;
    }

    /**
     * 方法二：获取多个参数
     */
    @RequestMapping("/login")
    public String login(String username,String password) {
        return "用户名：" + username + "| 密码： " + password;
    }

    /**
     * 方法三： 获取对象
     */
    @RequestMapping("/reg")
    public String reg(UserInfo userInfo) {
        return "用户信息： " + userInfo;
    }

}
